﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for Sesija
/// </summary>
public class Broker
{
    #region SQL baza na netu
    SqlConnection konekcija;
    SqlCommand komanda;

    private static string userName = "iqosuethikrdvocn";
    private static string password = "LFP7Y8HQz55nTcVMvTfYs4PDr63ct7cotbBKR5yveZr2pGEqLbVfConRZjN3eEvA";
    private static string dataSource = "0109b8fe-ec2a-4366-a679-a0fe000a0092.sqlserver.sequelizer.com";
    private static string sampleDatabaseName = "db0109b8feec2a4366a679a0fe000a0092";

    SqlConnectionStringBuilder connString1Builder;


    private static Broker instanca;
    public static Broker DajInstancu()
    {
        if (instanca == null)
        {
            instanca = new Broker();
        }
        return instanca;
    }

    void KonektujSe()
    {

        connString1Builder = new SqlConnectionStringBuilder();
        connString1Builder.DataSource = dataSource;
        connString1Builder.InitialCatalog = sampleDatabaseName;
        connString1Builder.Encrypt = true;
        connString1Builder.TrustServerCertificate = true;
        connString1Builder.UserID = userName;
        connString1Builder.Password = password;
        connString1Builder.ConnectTimeout = 30;

        connString1Builder.AsynchronousProcessing = true;
        connString1Builder.MultipleActiveResultSets = true;

        //    //// konekcija = new SqlConnection(connString1Builder.ToString());

        //    //for (int i = 0; i < konekcije.Length; i++)
        //    //{
        //    //    //  konekcije[i]=   new SqlConnection(connString1Builder.ToString());
        //    //}
        konekcija = new SqlConnection(connString1Builder.ToString());
        komanda = konekcija.CreateCommand();

    }

    public Broker()
    {
        KonektujSe();
    }

    //public List<Vozac> VratiSveVozace()
    //{
    //    List<Vozac> listaVozaca = new List<Vozac>();

    //    try
    //    {
    //        konekcija.Open();
    //        komanda.CommandText = "SELECT ImeIPrezime FROM Baza";

    //        SqlDataReader citac = komanda.ExecuteReader();
    //        while (citac.Read())
    //        {
    //            Vozac v = new Vozac();
    //            v.ImeIPrezime = citac["ImeIPrezime"].ToString();
    //            listaVozaca.Add(v);
    //        }
    //        return listaVozaca;
    //    }
    //    catch (Exception)
    //    {

    //        throw;
    //    }
    //    finally
    //    {
    //        if (konekcija != null)
    //        {
    //            konekcija.Close();
    //        }
    //    }

    //}
    #endregion

    #region Access baza
    //OleDbConnection konekcija;
    //OleDbCommand komanda;

    //private static Broker instanca;
    //public static Broker DajInstancu()
    //{
    //    if (instanca == null)
    //    {
    //        instanca = new Broker();
    //    }
    //    return instanca;
    //}

    //private void KonektujSe()
    //{
    //    konekcija = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|Baza.accdb;Persist Security Info=False");
    //    komanda = konekcija.CreateCommand();
    //}

    //public Broker()
    //{
    //    KonektujSe();
    //}
    #endregion


    public int UnesiTiket(List<Vozac> vozaci, string korisnik)
    {
        try
        {
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[0].ImeIPrezime + "')";
            komanda.CommandType = CommandType.Text;
            konekcija.Open();
            komanda.ExecuteNonQuery();
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[1].ImeIPrezime + "')";
            komanda.ExecuteNonQuery();
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[2].ImeIPrezime + "')";
            komanda.ExecuteNonQuery();
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[3].ImeIPrezime + "')";
            komanda.ExecuteNonQuery();
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[4].ImeIPrezime + "')";
            komanda.ExecuteNonQuery();
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[5].ImeIPrezime + "')";
            komanda.ExecuteNonQuery();
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[6].ImeIPrezime + "')";
            komanda.ExecuteNonQuery();
            komanda.CommandText = "INSERT INTO TTiket VALUES('" + korisnik + "','" + vozaci[7].ImeIPrezime + "')";
            komanda.CommandType = CommandType.Text;


            int rezultat = komanda.ExecuteNonQuery();
            return rezultat;
        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            if (konekcija != null)
            {
                konekcija.Close();
            }
        }
    }

    public List<Vozac> VratiSpisakVozaca(string kladionicar)
    {
        List<Vozac> listaVozaca = new List<Vozac>();

        try
        {
            komanda.CommandText = "SELECT ImeIPrezime FROM TTiket WHERE KorisnikID='" + kladionicar + "'";
            komanda.CommandType = CommandType.Text;
            konekcija.Open();
            SqlDataReader citac = komanda.ExecuteReader();
            //OleDbDataReader citac = komanda.ExecuteReader();

            while (citac.Read())
            {
                Vozac v = new Vozac();
                v.ImeIPrezime = citac["ImeIPrezime"].ToString();
                listaVozaca.Add(v);
            }
            return listaVozaca;
        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            if (konekcija != null)
            {
                konekcija.Close();
            }
        }
    }

    public List<string> VratiKladionicare()
    {
        List<string> listaKladionicara = new List<string>();

        try
        {
            komanda.CommandText = "SELECT DISTINCT KorisnikID FROM TTiket";
            komanda.CommandType = CommandType.Text;
            konekcija.Open();

            SqlDataReader citac = komanda.ExecuteReader();
            //OleDbDataReader citac = komanda.ExecuteReader();

            while (citac.Read())
            {
                listaKladionicara.Add(citac["KorisnikID"].ToString());
            }
            return listaKladionicara;
        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            if (konekcija != null)
            {
                konekcija.Close();
            }
        }

    }

    public int ObrisiTikete(string imeKladionicara)
    {
        try
        {
            if (imeKladionicara == "Obrisi sve tikete")
            {
                komanda.CommandText = "DELETE FROM TTiket";
                komanda.CommandType = CommandType.Text;
                konekcija.Open();

                int rezultat1 = komanda.ExecuteNonQuery();
                return rezultat1;
            }
            else
            {
                komanda.CommandText = "DELETE FROM TTiket Where KorisnikID='" + imeKladionicara + "'";
                komanda.CommandType = CommandType.Text;
                konekcija.Open();

                int rezultat = komanda.ExecuteNonQuery();
                return rezultat;
            }
        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            if (konekcija != null)
            {
                konekcija.Close();
            }
        }
    }

    public bool VratiStatusKladionice()
    {
        bool zakljucano = true;
        try
        {
            komanda.CommandText = "SELECT Status FROM TStatus";
            komanda.CommandType = CommandType.Text;
            konekcija.Open();

            SqlDataReader citac = komanda.ExecuteReader();
            //OleDbDataReader citac = komanda.ExecuteReader();
            while (citac.Read())
            {
                if (citac["Status"].ToString() == "True")
                {
                    zakljucano = true;
                }
                else
                {
                    zakljucano = false;
                }
            }
            return zakljucano;


        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            if (konekcija != null)
            {
                konekcija.Close();
            }
        }
    }

    public int IzmeniStatusKladionice(bool status)
    {
        try
        {
            komanda.CommandText = "UPDATE TStatus SET Status='" + status + "'";
            komanda.CommandType = CommandType.Text;
            konekcija.Open();

            int rezultat = komanda.ExecuteNonQuery();
            return rezultat;
        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            if (konekcija != null)
            {
                konekcija.Close();
            }
        }
    }
}